package com.gqj.meter.service;

import com.gqj.meter.controller.MdInTaskDetailsController;
import com.gqj.meter.domain.MdInTaskDetails;
import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 出入库明细Service接口
 *
 * @author lxq
 * @date lxq-02-10
 */
public interface IMdInTaskDetailsService {
    /**
     * 查询出入库明细
     *
     * @param inTaskDetailsId 出入库明细主键
     * @return 出入库明细
     */
    public MdInTaskDetails selectMdInTaskDetailsByInTaskDetailsId(Long inTaskDetailsId);

    /**
     * 查询出入库明细列表
     *
     * @param mdInTaskDetails 出入库明细
     * @return 出入库明细集合
     */
    public List<MdInTaskDetails> selectMdInTaskDetailsList(MdInTaskDetails mdInTaskDetails);

    /**
     * 查询出入库明细列表
     *
     * @param mdInTaskDetails 出入库明细
     * @return 出入库明细集合
     */
    public List<MdInTaskDetails> exportMdInTaskDetailsListExcel(MdInTaskDetails mdInTaskDetails);

    /**
     * 新增出入库明细
     *
     * @param mdInTaskDetailsList 出入库明细
     * @return 结果
     */
    public int insertMdInTaskDetails(List<MdInTaskDetails> mdInTaskDetailsList);

    /**
     * 修改出入库明细
     *
     * @param mdInTaskMap 出入库明细
     * @return 结果
     */
    public int updateMdInTaskDetails(MdInTaskDetailsController.MdInTaskMap mdInTaskMap) throws IOException, ParserConfigurationException, SAXException;

    /**
     * 批量删除出入库明细
     *
     * @param inTaskDetailsIds 需要删除的出入库明细主键集合
     * @return 结果
     */
    public int deleteMdInTaskDetailsByInTaskDetailsIds(Long[] inTaskDetailsIds);

    /**
     * 删除出入库明细信息
     *
     * @param inTaskDetailsId 出入库明细主键
     * @return 结果
     */
    public int deleteMdInTaskDetailsByInTaskDetailsId(Long inTaskDetailsId);

    /**
     * 导入入库明细数据
     *
     * @param inTaskDetailsList 入库明细列表
     * @param inTaskNo          任务编号
     * @return 结果
     */
    public String importMdInTaskDetails(List<MdInTaskDetails> inTaskDetailsList, String inTaskNo, String assetsCategory, Boolean isCoverSupport);

    /**
     * 查询入库数量信息
     *
     * @return 结果
     */
    public Map<String, Object> getInNumInfo();

    //获取设备利用率
    public Map<String, Object> getTaskDetailsEquipment();
}
